package com.itheima.controller;

import com.itheima.pojo.Result;
import com.itheima.utils.AliyunOSSOperator;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.util.Objects;
import java.util.UUID;

// 上传文件
@Slf4j
@RestController
public class UploadController {
//private static final String UPLOAD_DIR = "D:/images/";
    /*
     * 上传文件 - 参数名file
     * 存在问题：文件名重复会覆盖前一个文件
     * 第二种为解决文件名重复问题
     */
    //    @PostMapping("/upload")
//    public Result upload(String username, Integer age , MultipartFile file) throws Exception {
//        log.info("上传文件：{}, {}, {}", username, age, file);
//        if(!file.isEmpty()){
//            //transferTo是MultipartFile提供的方法，用于将文件保存到指定的文件路径
//            file.transferTo(new File("D:\\images\\" + file.getOriginalFilename()));
//        }
//        return Result.success();
//    }
    //解决文件名重复问题但是是保存在磁盘上

//    @PostMapping("/upload")
//    public Result upload(String username, Integer age , MultipartFile file) throws Exception {
//        log.info("上传文件：{}, {}, {}", username, age, file);
//        if (!file.isEmpty()) {
//            // 生成唯一文件名
//            String originalFilename = file.getOriginalFilename();//获取文件名
//            String extName = originalFilename.substring(originalFilename.lastIndexOf("."));//获取文件后缀
//            //replace("-", "")去掉UUID中的"-"
//            String uniqueFileName = UUID.randomUUID().toString().replace("-", "") + extName;//生成唯一文件名
//            // 拼接完整的文件路径
//            File targetFile = new File(UPLOAD_DIR + uniqueFileName);
//
//            // 如果目标目录不存在，则创建它  getParentFile()获取父目录在这里父目录是D:/images
//            if (!targetFile.getParentFile().exists()) {
//                targetFile.getParentFile().mkdirs();
//            }
//            // 保存文件
//            file.transferTo(targetFile);
//        }
//        return Result.success();
//    }
    @Autowired
    private AliyunOSSOperator aliyunOSSOperator;

    //上传图片至阿里云OSS，返回图片的URL然后将url路径保存到数据库

    @PostMapping("/upload")
    public Result upload(MultipartFile file) throws Exception {
        log.info("文件上传: {}", file.getOriginalFilename());

        //将文件交给OSS存储管理
        String url = aliyunOSSOperator.upload(file.getBytes(), Objects.requireNonNull(file.getOriginalFilename()));
        log.info("文件上传OSS, url: {}", url);

        return Result.success(url);
    }

}